from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QDateEdit, QPushButton, QDialog, QMessageBox  
from PyQt6.QtCore import QDate, QDateTime, Qt  
  
class DateRangeWindow(QMainWindow):  
    def __init__(self):  
        super().__init__()  
        self.initUI()  
  
    def initUI(self):  
        self.setWindowTitle('日期范围选择')  
  
        # 创建开始日期和结束日期控件  
        self.start_date_edit = QDateEdit(self)  
        self.start_date_edit.setCalendarPopup(True)  
        self.set_start_date_to_current_month_first()

        self.end_date_edit = QDateEdit(self)  
        self.end_date_edit.setCalendarPopup(True)  
        self.end_date_edit.setDate(QDate.currentDate())  
  
        # 创建一个按钮来检查日期范围  
        self.check_button = QPushButton('检查日期范围', self)  
        self.check_button.clicked.connect(self.check_date_range)  
  
        # 布局  
        layout = QVBoxLayout()  
        layout.addWidget(self.start_date_edit)  
        layout.addWidget(self.end_date_edit)  
        layout.addWidget(self.check_button)  
  
        # 创建一个中心部件，并设置其布局  
        central_widget = QWidget()  
        central_widget.setLayout(layout)  
        self.setCentralWidget(central_widget)  



    def set_start_date_to_current_month_first(self):  
        # 获取当前日期  
        current_date = QDate.currentDate()  
        # 设置日期为当前月份的第一天  
        first_day_of_month = QDate(current_date.year(), current_date.month(), 1)  
        # 设置 QDateEdit 的日期  
        self.start_date_edit.setDate(first_day_of_month)  
  
    def check_date_range(self):  
        start_date = self.start_date_edit.date()  
        end_date = self.end_date_edit.date()  
  
        if end_date < start_date:  
            QMessageBox.warning(self, '警告', '结束日期必须晚于或等于开始日期！')  
        else:  
            QMessageBox.information(self, '信息', '日期范围有效！')  
  
if __name__ == '__main__':  
    app = QApplication([])  
    ex = DateRangeWindow()  
    ex.show()  
    app.exec()